﻿

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BussinesCosea;
using System.Configuration;

public partial class OrdenServicio : System.Web.UI.Page
{
    private static AppSettingsReader settings = new AppSettingsReader();
    string cadena = (string)settings.GetValue("Conexion2", typeof(string));
    //int folio = 0;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (this.IsPostBack == false)
        {
            HabilitarCajas(false);
            CargaCombos();
        }
    }

    private void CargaCombos()
    {
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                
                IdEmpresa.DataSource = c.ObtenEmpresas();
                IdEmpresa.DataTextField = "Nombre";
                IdEmpresa.DataValueField = "IdEmpresa";
                IdEmpresa.DataBind();

                IdCliente.DataSource = c.ObtenClientes();
                IdCliente.DataTextField = "RazonSocial";
                IdCliente.DataValueField = "IdCliente";
                IdCliente.DataBind();

                Puesto.DataSource = c.ObtenPuestos();
                Puesto.DataTextField = "Puesto1";
                Puesto.DataValueField = "IdPuesto";
                Puesto.DataBind();
                

                IdTipoContrato.DataSource = c.ObtenTipoContrato();
                IdTipoContrato.DataTextField = "Descripcion";
                IdTipoContrato.DataValueField = "IdTipoContrato";
                IdTipoContrato.DataBind();
            }
        }
        catch (Exception ex)
        {            
            throw ;
        }
    }

    private void guardar()
    {
        CoseaDirectos cDirectos;
        bool result = false;
        try
        {
            cDirectos = new CoseaDirectos(cadena); //haces una instancia del objeto CoseaDirectos la puedes nombrar como tu quieras
            BussinesCosea.OrdenServicio oser = new BussinesCosea.OrdenServicio(); //Haces una instancia de la solicitud de empleo es importante que refieras el namespace antes.

            DateTime ffecha = DateTime.Now;
            result = DateTime.TryParse(txtFechaIngreso.Text, out ffecha);
            if (result)
                oser.FechaOrden = ffecha;
            else
                oser.FechaOrden = DateTime.Now;

            //oser.IdPuesto = 1; //relacionar con combo

            result = DateTime.TryParse(txtFechaContratacion.Text, out ffecha);
            if (result)
                oser.FechaRequeridaContratacion = ffecha;
            else
                oser.FechaRequeridaContratacion = DateTime.Now;
            result = DateTime.TryParse( FechaReqFinal.Text, out ffecha);
            if (result)
                oser.FechaRequeridaContratacionFinal = ffecha;
            else
                oser.FechaRequeridaContratacionFinal = DateTime.Now;
            oser.IdEmpresa = 1; //relacionar con combo
            int ivalor = 0;
            //result = int.TryParse(Puesto.Text, out ivalor);
            //if (result)
            //    oser.IdPuesto = ivalor;
            //else
            //    oser.IdPuesto = 1;

            result = int.TryParse(TotalVacantes.Text, out ivalor);
            if (result)
                oser.TotalVacantes = ivalor;
            else
                oser.TotalVacantes = 1;

            oser.EdadMinima = USis.TStr(10, EdadMinima.Text);
            oser.EdadMaxima = USis.TStr(10, EdadMaxima.Text);
            oser.Genero = USis.TStr(10,Genero.Text);
            oser.EstadoCivil = USis.TStr(15, EstadoCivil.Text);
            oser.Escolaridad = USis.TStr(20, Escolaridad.Text);
            oser.Titulo = USis.TStr(20, Titulo.Text);
            oser.IdiomaExtranjero = USis.TStr(15, IdiomaExtranjero.Text);
            oser.Estatura = USis.TStr(15, Estatura.Text);
            oser.Talla = USis.TStr(15, Talla.Text);
            oser.Otros = USis.TStr(50, Otro.Text);
            oser.ExperienciaRequerida = USis.TStr(15, ExperienciaRequerida.Text);
            oser.Tiempo = USis.TStr(10, Tiempo.Text);
            oser.Conocimiento = USis.TStr(50, Conocimiento.Text);
            oser.Habilidades = USis.TStr(50, Habilidades.Text);
            oser.Actividades = USis.TStr(50, Actividades.Text);
            oser.SoftwareaManejar = USis.TStr(50, SoftwareaManejar.Text);
            oser.PersonalCargo = USis.TStr(10, PersonalCargo.Text);
            oser.ObservacionesSalario = USis.TStr(50, ObservacionesSalario.Text);

            oser.PeriodoSalario = USis.TStr(10, PeriodoSalario.Text);
            oser.TipoMoneda = USis.TStr(10, TipoMoneda.Text);
            oser.HorariosEntrevista = USis.TStr(30, Horarios.Text);
        
            
            result = int.TryParse(CantidadPersonalCargo.Text , out ivalor);
            if (result)
                oser.CantidadPersonalCargo = ivalor;
            else
                oser.CantidadPersonalCargo = 0;
            oser.LugardeTrabajo = USis.TStr(20, LugardeTrabajo.Text);
            oser.ColoniaLugarTrabajo = USis.TStr(20, ColoniaLugarTrabajo.Text);
            oser.EntreCallesLugarTrabajo = USis.TStr(50, EntreCallesLugarTrabajo.Text);
            oser.Comentarios1 = USis.TStr(50, Comentarios.Text);
            oser.TieneComedor = USis.TStr(10, TieneComedor.Text);
            oser.TieneTransporte = USis.TStr(10, TieneTransporte.Text);
            oser.Prestaciones = USis.TStr(10, Prestaciones.Text);
            //oser.TipoContrato
          
            result = DateTime.TryParse(FechaEstimadaInicio.Text, out ffecha);
            if (result)
                oser.FechaEstimadaInicio = ffecha;
            else
                oser.FechaEstimadaInicio = DateTime.Now;

            result = DateTime.TryParse(FechaEstimadaTerminacion.Text, out ffecha);

            if (CheckBox1.Checked == true)
                oser.FechaEstimadaTerminacion = null;
            else
            {
                if (result)
                    oser.FechaEstimadaTerminacion = ffecha;
                else
                    oser.FechaEstimadaTerminacion = DateTime.Now;
            }
            

            result = int.TryParse(SalarioMinimo.Text, out ivalor);
            if (result)
                oser.SalarioMinimo = ivalor;
            else
                oser.SalarioMinimo = 1;

            result = int.TryParse(SalarioMaximo.Text, out ivalor);
            if (result)
                oser.SalarioMaximo = ivalor;
            else
                oser.SalarioMaximo = 1;

            oser.Vigencia = USis.TStr(10, Vigencia.Text);
            oser.Observaciones = USis.TStr(50, Observaciones.Text);

            oser.IdCliente = int.Parse(IdCliente.SelectedItem.Value);
            oser.IdEmpresa = int.Parse(IdEmpresa.SelectedItem.Value);
            oser.IdPuesto = int.Parse(Puesto.SelectedItem.Value);
            oser.IdTipoContrato = int.Parse(IdTipoContrato.SelectedItem.Value);

            int iIdOrden = 0;

            IdOrden.Text = cDirectos.GuardaOrdenServicio(oser, ref iIdOrden,"Orden de reciente creación" );

            foreach (BonosOrdenServicio item in AdmBonosOrdenServicio.ListaBonosOrdenServicio)
            {
                cDirectos.GuardaBonoOrdenServicio(item, TipoGuardado.NuevoRegistro, iIdOrden);                
            }

            foreach (ValesOrdenServicio item in AdmValesOrdenServicio.ListaValesOrdenServicio)
            {
                cDirectos.GuardaValesOrdenServicio(item, TipoGuardado.NuevoRegistro, iIdOrden);
            }
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
            //Aqui hay que mandar llamar una pantalla para los mensajes de error.
           // throw;
        }
        finally
        {
            cDirectos = null;
        }

    }
    protected void Button2_Click(object sender, EventArgs e)
    {

        AdmBonosOrdenServicio.ListaBonosOrdenServicio.Clear();
        AdmValesOrdenServicio.ListaValesOrdenServicio.Clear();
        limpiaCajas();
        HabilitarCajas(true);
        txtFechaIngreso.Text = DateTime.Now.ToString("yyyy-MM-dd");
        //CoseaDirectos cDirectos = new CoseaDirectos(cadena);
        //folio = cDirectos.ObtenFolioSolicitud();
        //HiddenField1.Value = folio.ToString();
        //cDirectos = null;

    }
    private void limpiaCajas()
    {
        IdOrden.Text = string.Empty;
        txtFechaIngreso.Text = DateTime.Now.ToString("yyyy-MM-dd");
        //IdEmpresa.Text = string.Empty;
        //Puesto.Text = string.Empty;
        TotalVacantes.Text = "1";
        txtFechaContratacion.Text = DateTime.Now.ToString("yyyy-MM-dd");
        EdadMaxima.Text = "18";
        EdadMinima.Text = "18";
        //Genero.Text = string.Empty;
        //EstadoCivil.Text = string.Empty;
        //Escolaridad.Text = string.Empty;
        Titulo.Text = string.Empty;
        IdiomaExtranjero.Text = string.Empty;
        Estatura.Text = string.Empty;
        Talla.Text = string.Empty;
        //ExperienciaRequerida.Text = string.Empty;
        Tiempo.Text = string.Empty;
        Conocimiento.Text = string.Empty;
        Habilidades.Text = string.Empty;
        Actividades.Text = string.Empty;
        SoftwareaManejar.Text = string.Empty;
        //PersonalCargo.Text = string.Empty;
        CantidadPersonalCargo.Text = string.Empty;
        LugardeTrabajo.Text = "Requerido";
        ColoniaLugarTrabajo.Text = string.Empty;
        EntreCallesLugarTrabajo.Text = string.Empty;
        Comentarios.Text = string.Empty;
        //TieneComedor.Text = string.Empty;
        //TieneTransporte.Text = string.Empty;
        Prestaciones.Text = string.Empty;
        //IdTipoContrato.Text = string.Empty;
        FechaEstimadaInicio.Text = DateTime.Now.ToString("yyyy-MM-dd");
        FechaEstimadaTerminacion.Text = DateTime.Now.ToString("yyyy-MM-dd");
        //Vigencia.Text = string.Empty;
        Observaciones.Text = string.Empty;
        SalarioMaximo.Text = "100";
        SalarioMinimo.Text = "100";
        ObservacionesSalario.Text = string.Empty;
        email.Text = string.Empty;
        RazonSocial.Text = string.Empty;
        RFC.Text = string.Empty;
        GiroEmpresa.Text = string.Empty;
        DireccionEmpresa.Text = string.Empty;
        ColoniaEmpresa.Text = string.Empty;
        Telefono.Text = string.Empty;
        CP.Text = string.Empty;
        Municipio.Text = string.Empty;
        Estado.Text = string.Empty;
        Contacto.Text = string.Empty;
        //PeriodoSalario.Text = string.Empty;
        //TipoMoneda.Text = string.Empty;
        Horarios.Text = string.Empty;

    }

    private void HabilitarCajas(bool valor)
    {
        bool contrario;
        if (valor)
            contrario = false;
        else
            contrario = true;
        IdOrden.Enabled = valor;
        txtFechaIngreso.Enabled = valor;
        IdEmpresa.Enabled = valor;
        Puesto.Enabled = valor;
        TotalVacantes.Enabled = valor;
        txtFechaContratacion.Enabled = valor;
        EdadMaxima.Enabled = valor;
        EdadMinima.Enabled = valor;
        Genero.Enabled = valor;
        EstadoCivil.Enabled = valor;
        Escolaridad.Enabled = valor;
        Titulo.Enabled = valor;
        IdiomaExtranjero.Enabled = valor;
        Estatura.Enabled = valor;
        Talla.Enabled = valor;
        ExperienciaRequerida.Enabled = valor;
        Tiempo.Enabled = valor;
        Conocimiento.Enabled = valor;
        Habilidades.Enabled = valor;
        Actividades.Enabled = valor;
        SoftwareaManejar.Enabled = valor;
        PersonalCargo.Enabled = valor;
        CantidadPersonalCargo.Enabled = valor;
        LugardeTrabajo.Enabled = valor;
        ColoniaLugarTrabajo.Enabled = valor;
        EntreCallesLugarTrabajo.Enabled = valor;
        Comentarios.Enabled = valor;
        TieneComedor.Enabled = valor;
        TieneTransporte.Enabled = valor;
        Prestaciones.Enabled = valor;
        IdTipoContrato.Enabled = valor;
        FechaEstimadaInicio.Enabled = valor;
        FechaEstimadaTerminacion.Enabled = valor;
        Vigencia.Enabled = valor;
        Observaciones.Enabled = valor;
        SalarioMaximo.Enabled = valor;
        SalarioMinimo.Enabled = valor;
        ObservacionesSalario.Enabled = valor;
        email.Enabled = valor;
        RazonSocial.Enabled = valor;
        RFC.Enabled = valor;
        GiroEmpresa.Enabled = valor;
        DireccionEmpresa.Enabled = valor;
        ColoniaEmpresa.Enabled = valor;
        Telefono.Enabled = valor;
        CP.Enabled = valor;
        Municipio.Enabled = valor;
        Estado.Enabled = valor;
        Contacto.Enabled = valor;
        IdCliente.Enabled = valor;
        btnCargaCte.Enabled = valor;
        Button4.Enabled = valor;
        Button1.Enabled = valor;
        Horarios.Enabled = valor;
        PeriodoSalario.Enabled = valor;
        TipoMoneda.Enabled = valor;
    }

    protected void btnGuardar_Click(object sender, EventArgs e)
    {
        guardar();
    }
    protected void IdCliente_SelectedIndexChanged(object sender, EventArgs e)
    {
        
    }
    protected void btnCargaCte_Click(object sender, EventArgs e)
    {
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                Cliente cte = c.ObtenCliente(int.Parse(IdCliente.SelectedItem.Value));
                RazonSocial.Text = cte.RazonSocial;
                RFC.Text = cte.Rfc;
                GiroEmpresa.Text = cte.Giro;
                DireccionEmpresa.Text = cte.Direccion;
                ColoniaEmpresa.Text = cte.Colonia;
                Telefono.Text = cte.Telefono1;
                CP.Text = cte.Cp;
                Municipio.Text = cte.Municipio;
                Estado.Text = cte.Estado;
                Contacto.Text = cte.Contacto1;
                email.Text = cte.email;
            }
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
            //throw;
        }
        
    }
    protected void btnGuardarBono_Click(object sender, EventArgs e)
    {
        try
        {
            BussinesCosea.BonosOrdenServicio bonos = new BussinesCosea.BonosOrdenServicio();
            bonos.Concepto = USis.TStr(20,ConceptoBono.Text);
            decimal cantidad = 0m;
            bool res = false;
            res = decimal.TryParse(ImporteBono.Text, out cantidad);
            if (res)
                bonos.Cantidad = cantidad;
            else
                bonos.Cantidad = 0m;
            bonos.Periocidad =  USis.TStr(20,PeriodicidadBono.Text);
            bonos.Fecha = DateTime.Now;
            res = decimal.TryParse(txtPorBono.Text, out cantidad);

            if (res)
                bonos.Porcentaje = cantidad;
            else
                bonos.Porcentaje = 0m;

            AdmBonosOrdenServicio.ListaBonosOrdenServicio.Add(bonos);


        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
            //throw;
        }
        grdDatos.DataSource = AdmBonosOrdenServicio.ListaBonosOrdenServicio;
        grdDatos.DataBind();
    }
    protected void Button3_Click(object sender, EventArgs e)
    {
        try
        {
            BussinesCosea.ValesOrdenServicio vales = new BussinesCosea.ValesOrdenServicio();
            vales.Concepto = USis.TStr(20, ConceptoVales.Text);
            decimal cantidad = 0m;
            bool res = false;
            res = decimal.TryParse(ImporteVales.Text, out cantidad);
            if (res)
                vales.Cantidad = cantidad;
            else
                vales.Cantidad = 0m;
            vales.Periocidad = USis.TStr(20, PeriodicidadVales.Text);
            vales.Fecha = DateTime.Now;

            res = decimal.TryParse(txtPorVal.Text, out cantidad);
            if (res)
                vales.Porcentaje = cantidad;
            else
                vales.Porcentaje = 0m;

            AdmValesOrdenServicio.ListaValesOrdenServicio.Add(vales);


        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
            //throw;
        }

        grdDatos2.DataSource = AdmValesOrdenServicio.ListaValesOrdenServicio;
        grdDatos2.DataBind();
    }
}